package br.edu.universo.si.projeto2.infojob.client.apresentacao;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import br.edu.universo.si.projeto2.infojob.client.bean.BeanCurriculoConhecimentos;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanCurriculoCurso;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanNacionalidade;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanProfissionalAssinante;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanProfissionalCurriculo;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanTitularidade;
import br.edu.universo.si.projeto2.infojob.client.componentes.DateBox;
import br.edu.universo.si.projeto2.infojob.client.componentes.NumberBox;
import br.edu.universo.si.projeto2.infojob.client.componentes.comboboxes.NacionalidadeListBox;
import br.edu.universo.si.projeto2.infojob.client.componentes.comboboxes.TitularidadesListBox;
import br.edu.universo.si.projeto2.infojob.client.componentes.dialogboxes.ConfirmationDialogBox;
import br.edu.universo.si.projeto2.infojob.client.componentes.dialogboxes.ErrorDialogBox;
import br.edu.universo.si.projeto2.infojob.client.componentes.dialogboxes.InformationDialogBox;
import br.edu.universo.si.projeto2.infojob.client.componentes.dialogboxes.ConfirmationDialogBox.ConfirmCallback;
import br.edu.universo.si.projeto2.infojob.client.util.Util;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.DisclosurePanel;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RadioButton;
import com.google.gwt.user.client.ui.SourcesTableEvents;
import com.google.gwt.user.client.ui.TableListener;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;

public class AProfissionalCurriculo extends DialogBox {
	private FlexTable flexTable;
	private DisclosurePanel disponibilidade;
	private static int pastRow = -1;
	private ACurriculos viewCurriculo;
	private NacionalidadeListBox nacionalidades;
	private TextArea descricaoPessoal;
	private TitularidadesListBox titularidades;
	private RadioButton disponibilidadeSim;
	private RadioButton disponibiliddeNao;
	private DateBox ultimaAtualizacao;
	private DateBox dataCriacao;
	private TextArea comentario;
	private static FlexTable gridCurso;
	private FlowPanel gridConhecimento;
	private FlexTable painelBotaoCadastro;
	private static List<BeanCurriculoCurso> lstCurriculoCurso = new ArrayList<BeanCurriculoCurso>();
	private List<BeanCurriculoConhecimentos> lstCurriculoConhecimento = new ArrayList<BeanCurriculoConhecimentos>();
	private Button cadastrarProfissionalBtn;
	private Button cancelarBtn;
	private static Button cadCurso;
	private static Button excCurso;
	private Integer idtutilaridade;

	final private Label nacionalidadelbl = new Label("Nacionalidade");
	final private Label descricaopessoallbl = new Label("* Descricao Pessoal");
	final private Label titularidadelbl = new Label("Titular");
	final private Label disponibilidadelbl = new Label("");
	// final private Label datatualizacaolbl = new Label("Dt.Ult.Atualizacao");
	// final private Label datacriacaolbl = new Label("Data de Criacao");
	final private Label comentariolbl = new Label("* Comentario");
	final private Label tituloGridCurso = new Label("Lista de Cursos");
	private Integer row = 3;
	private VerticalPanel painelGeral;
	private int contConhecimento = 0;
	private BeanProfissionalCurriculo beanProfissionalCurriculoLocal;
	private Integer linhaSelecionadaCurso;

	public AProfissionalCurriculo(BeanProfissionalCurriculo bprofCur) {

		super();
		VerticalPanel vp = new VerticalPanel();
		HorizontalPanel hp = new HorizontalPanel();		
		iniciarComponentes();
		setarTamanhoCampos();
	
		if (bprofCur == null) {
			this.setText("Cadastrar Curriculo de Profissional ");
			titularidades.setIndice(0);
		} else {
			this.setText("Alterar Curriculo de Profissional");
			int idnac = bprofCur.getBNacionalidade().getId();
			nacionalidades.setIndice(idnac);
			descricaoPessoal.setText(bprofCur.getDescricaoPessoal());		
			idtutilaridade = bprofCur.getBTitularidade().getId();
			titularidades.setIndice(idtutilaridade);
			if (bprofCur.isDisponibilidadeViagem() == true) {
				disponibilidadeSim.setChecked(bprofCur
						.isDisponibilidadeViagem());
			} else {
				disponibiliddeNao.setChecked(!bprofCur
						.isDisponibilidadeViagem());
			}
			dataCriacao.setText(bprofCur.getDataCriacao());
			ultimaAtualizacao.setText(bprofCur.getUltimaAtualizacao());
			comentario.setText(bprofCur.getComentario());

		}

		this.setAnimationEnabled(true);
		this.center();
		this.setWidth("600px");
		this.setHeight("400px");
		disponibilidade.setOpen(true);
		HorizontalPanel panelDisponibilidade = new HorizontalPanel();
		panelDisponibilidade.add(disponibilidadeSim);
		panelDisponibilidade.add(disponibiliddeNao);
		disponibilidade.add(panelDisponibilidade);

		cadastrarProfissionalBtn = new Button("Cadastrar");
		cancelarBtn = new Button("Fechar");
		disponibilidadeSim.setText("Sim");
		disponibiliddeNao.setText("Nao");
		flexTable = new FlexTable();
		FlexCellFormatter cellFormatter = flexTable.getFlexCellFormatter();
		flexTable.setCellSpacing(6);
		flexTable.setWidget(0, 0, nacionalidadelbl);
		flexTable.setWidget(0, 1, nacionalidades);

		flexTable.setWidget(1, 0, disponibilidadelbl);
		flexTable.setWidget(1, 1, disponibilidade);

		flexTable.setWidget(2, 0, titularidadelbl);
		flexTable.setWidget(2, 1, titularidades);

		/*
		 * flexTable.setWidget(3, 0, datacriacaolbl); flexTable.setWidget(3, 1,
		 * dataCriacao);
		 * 
		 * flexTable.setWidget(4, 0, datatualizacaolbl); flexTable.setWidget(4,
		 * 1, ultimaAtualizacao);
		 */

		flexTable.setWidget(3, 0, descricaopessoallbl);
		flexTable.setWidget(3, 1, descricaoPessoal);

		flexTable.setWidget(4, 0, comentariolbl);
		flexTable.setWidget(4, 1, comentario);

		setarEstiloGridCurso();
		tituloGridCurso.setHeight("15px");
		DisclosurePanel discCursos = new DisclosurePanel(tituloGridCurso
				.getText(), true);
		gridCurso.setCellPadding(7);
		gridCurso.setCellSpacing(1);
		gridCurso.setWidth("300px");

		gridCurso.setWidget(0, 0, new HTML("ID"));
		gridCurso.setWidget(0, 1, new HTML("Curso"));
		gridCurso.setWidget(0, 2, new HTML("Carga Horaria"));
		gridCurso.setWidget(0, 3, new HTML("Instituicao"));
		gridCurso.getFlexCellFormatter().setVisible(0, 0, false);
		AsyncCallback<HashMap<Integer, String>> clCurConhecimento = new AsyncCallback<HashMap<Integer, String>>() {
			public void onSuccess(HashMap<Integer, String> result) {
				for (int i = 1; i < result.size(); i++) {
					CheckBox ck = new CheckBox(result.get(i));
					gridConhecimento.add(ck);
				}
				contConhecimento = result.size();
			}

			public void onFailure(Throwable caught) {

				ErrorDialogBox erroConhecimento = new ErrorDialogBox(
						"Erro ao buscar conhecimento" + caught.getMessage());
				erroConhecimento.show();
			}
		};
		Util.getService().getConhecimentos(clCurConhecimento);

		if (bprofCur != null) {
			AsyncCallback<List<BeanCurriculoConhecimentos>> callbackcurconhecimento = new AsyncCallback<List<BeanCurriculoConhecimentos>>() {
				public void onSuccess(List<BeanCurriculoConhecimentos> result) {
					if (result.size() > 0) {
					  try
					  {
						int j = 0;
						for (int i = 0; i < contConhecimento; i++) {
							if ((i + 1) == result.get(j).getIdConhecimento()) {
								((CheckBox) gridConhecimento.getWidget(i)).setChecked(true);
								if(j < result.size()-1){
								   j++;
								}
							}
						}
					  } catch (Exception e) {
						e.printStackTrace();
					  }
						
					}
				}

				public void onFailure(Throwable caught) {

					ErrorDialogBox errocur = new ErrorDialogBox(
							"Erro ao buscar curriculo conhecimento"
									+ caught.getMessage());
					errocur.center();
					errocur.show();
				}
			};

			Util.getService().getCurriculoConhecimentos(bprofCur.getId(),callbackcurconhecimento);
		}

		// somente chamo o callback caso seja uma alteracao
		carregargrid(bprofCur);
		gridCurso.addTableListener(new TableListener() {
			public void onCellClicked(SourcesTableEvents sender, int row,
					int cell) {
				if (row > 0 && row <= lstCurriculoCurso.size()) {
					setLinhaSelecionadaCurso(row);
					setarEstiloLinhaSelecionada(row);
				}
			}
		});
		vp.add(gridCurso);
		hp.add(cadCurso);
		hp.add(excCurso);
		vp.add(hp);
		discCursos.add(vp);
		if (bprofCur != null) {
			flexTable.setWidget(8, 0, cadastrarProfissionalBtn);
			cadastrarProfissionalBtn.setText("Alterar");
		} else {
			flexTable.setWidget(8, 0, cadastrarProfissionalBtn);
			cadastrarProfissionalBtn.setText("Cadastrar");
		}

		flexTable.setWidget(8, 1, cancelarBtn);

		cellFormatter.setAlignment(8, 0, HasHorizontalAlignment.ALIGN_CENTER,
				HasVerticalAlignment.ALIGN_MIDDLE);

		painelBotaoCadastro.setWidget(0, 0, cadastrarProfissionalBtn);
		painelBotaoCadastro.setWidget(0, 1, cancelarBtn);

		disponibilidadeSim.addClickListener(new ClickListener() {
			public void onClick(Widget sender) {

				disponibilidadeSim.setChecked(true);
				disponibiliddeNao.setChecked(false);

			}
		});
		disponibiliddeNao.addClickListener(new ClickListener() {
			public void onClick(Widget sender) {

				disponibilidadeSim.setChecked(false);
				disponibiliddeNao.setChecked(true);

			}
		});

		// acao para fechar...
		cancelarBtn.addClickListener(new ClickListener() {
			public void onClick(Widget sender) {

				AProfissionalCurriculo.this.hide();
			}
		});
		final BeanProfissionalCurriculo beanprofissionalcurriculo = bprofCur;
		final int idprofass = ACurriculos.getIdprofissionalAssinante();
		cadastrarProfissionalBtn.addClickListener(new ClickListener() {
			public void onClick(Widget sender) {
				final BeanProfissionalCurriculo bprofissionalcurriculo = new BeanProfissionalCurriculo();
				if (beanprofissionalcurriculo != null) {
					bprofissionalcurriculo.setId(beanprofissionalcurriculo
							.getId());
					bprofissionalcurriculo.setComentario(comentario.getText());
					//bprofissionalcurriculo.setDataCriacao(dataCriacao.getText(
					// ));
					bprofissionalcurriculo.setDescricaoPessoal(descricaoPessoal
							.getText());
					bprofissionalcurriculo
							.setDisponibilidadeViagem(disponibilidadeSim
									.isChecked());
					BeanNacionalidade nac = new BeanNacionalidade();
					nac.setId(nacionalidades.getSelectedIndex() + 1);
					bprofissionalcurriculo.setBNacionalidade(nac);
					BeanProfissionalAssinante bproass = new BeanProfissionalAssinante();
					bproass.setId(idprofass);
					bprofissionalcurriculo.setBProfissional(bproass);
					BeanTitularidade btitulo = new BeanTitularidade();
					btitulo.setId(titularidades.getSelectedIndex()+1);
					bprofissionalcurriculo.setBTitularidade(btitulo);
					// bprofissionalcurriculo.setUltimaAtualizacao(
					// ultimaAtualizacao.getText());
				} else {
					bprofissionalcurriculo.setId(0);
					bprofissionalcurriculo.setComentario(comentario.getText());
					//bprofissionalcurriculo.setDataCriacao(dataCriacao.getText(
					// ));
					bprofissionalcurriculo.setDescricaoPessoal(descricaoPessoal
							.getText());
					bprofissionalcurriculo
							.setDisponibilidadeViagem(disponibilidadeSim
									.isChecked());
					BeanNacionalidade nac = new BeanNacionalidade();
					nac.setId(nacionalidades.getSelectedIndex() + 1);
					bprofissionalcurriculo.setBNacionalidade(nac);
					BeanProfissionalAssinante bproass = new BeanProfissionalAssinante();
					bproass.setId(idprofass);
					bprofissionalcurriculo.setBProfissional(bproass);
					BeanTitularidade btitulo = new BeanTitularidade();
					btitulo.setId(titularidades.getSelectedIndex()+1);
					bprofissionalcurriculo.setBTitularidade(btitulo);
					// bprofissionalcurriculo.setUltimaAtualizacao(
					// ultimaAtualizacao.getText());
				}
				lstCurriculoConhecimento.clear();
				for (int i = 0; i < gridConhecimento.getWidgetCount(); i++) {
					new CheckBox();
					BeanCurriculoConhecimentos bconhec = new BeanCurriculoConhecimentos();
					if (((CheckBox) gridConhecimento.getWidget(i)).isChecked()) {
						bconhec.setIdConhecimento(i + 1);
						bconhec.setIdCurriculo(bprofissionalcurriculo.getId());
						lstCurriculoConhecimento.add(bconhec);
					}
				}

				AsyncCallback<Boolean> clbackcurriculo = new AsyncCallback<Boolean>() {
					public void onSuccess(Boolean result) {
						if (result) {
							InformationDialogBox informacao = new InformationDialogBox(
									"curriculo gravado com sucesso");
							informacao.show();
							cadCurso.setEnabled(true);
							excCurso.setEnabled(true);
							setBeanProfissionalCurriculoLocal(bprofissionalcurriculo);
							getViewCurriculo().carregarGridCurriculo();
						}
					};

					public void onFailure(Throwable caught) {

						ErrorDialogBox errogeral = new ErrorDialogBox(
								"Erro geral ao gravar informacao"
										+ caught.getMessage());
						errogeral.center();
						errogeral.show();
					};
				};
				if (verificaCampos()) {
					Util.getService().salvarOuAtualizarService(
							bprofissionalcurriculo, lstCurriculoConhecimento,
							clbackcurriculo);
				} else {
					InformationDialogBox informacao = new InformationDialogBox("Preenchas os campos descricao pessoal e comentario, para salvar os dados");
					informacao.center();
					informacao.show();
				}
			}

		});
		if (bprofCur == null) {
			cadCurso.setEnabled(false);
			excCurso.setEnabled(false);
		} else {
			cadCurso.setEnabled(true);
			excCurso.setEnabled(true);

		}

		cadCurso.addClickListener(new ClickListener() {
			public void onClick(Widget sender) {

				final DialogBox dialogcurso = new DialogBox();
				FlexTable fpcurso = new FlexTable();
				FlexTable fpbotao = new FlexTable();
				VerticalPanel vp = new VerticalPanel();
				final TextBox txtcurso = new TextBox();
				final NumberBox txtcargahoraria = new NumberBox();
				final TextBox txtinstituicao = new TextBox();
				Button salvarcurso = new Button("Salvar");
				Button fechar = new Button("Fechar");
				Label lblcurso = new Label("Curso");
				Label lblcargahoraria = new Label("Carga Horaria");
				Label lblInstituicao = new Label("Instituicao");
				fpcurso.setWidget(0, 0, lblcurso);
				fpcurso.setWidget(0, 1, txtcurso);
				fpcurso.setWidget(1, 0, lblcargahoraria);
				fpcurso.setWidget(1, 1, txtcargahoraria);
				fpcurso.setWidget(2, 0, lblInstituicao);
				fpcurso.setWidget(2, 1, txtinstituicao);
				fpbotao.setWidget(0, 0, salvarcurso);
				fpbotao.setWidget(0, 1, fechar);
				vp.add(fpcurso);
				vp.add(fpbotao);
				dialogcurso.setText("Cadatro de Curso");
				dialogcurso.add(vp);
				dialogcurso.center();
				dialogcurso.show();

				if ((beanprofissionalcurriculo != null)
						|| (getBeanProfissionalCurriculoLocal() != null)) {

					fechar.addClickListener(new ClickListener() {
						public void onClick(Widget sender) {

							dialogcurso.hide();
						}
					});
					salvarcurso.addClickListener(new ClickListener() {
						public void onClick(Widget sender) {

							final BeanCurriculoCurso bcurcurso = new BeanCurriculoCurso();
							if (beanprofissionalcurriculo != null) {
								bcurcurso
										.setBProfissionalCurriculo(beanprofissionalcurriculo);
							} else {
								bcurcurso
										.setBProfissionalCurriculo(getBeanProfissionalCurriculoLocal());
							}
							bcurcurso.setCurso(txtcurso.getText());
							bcurcurso.setCargaHoraria(Integer
									.valueOf(txtcargahoraria.getText()));
							bcurcurso.setInstituicao(txtinstituicao.getText());
							AsyncCallback<Integer> clsavecurriculo = new AsyncCallback<Integer>() {
								public void onSuccess(Integer result) {
									bcurcurso.getBProfissionalCurriculo()
											.setId(result);
									carregargrid(bcurcurso
											.getBProfissionalCurriculo());
									InformationDialogBox informacao = new InformationDialogBox(
											"Sucesso ao gravar dados curso");
									informacao.show();
									txtcurso.setText("");
									txtcargahoraria.setText("");
									txtinstituicao.setText("");
								};

								public void onFailure(Throwable caught) {

									ErrorDialogBox errogeral = new ErrorDialogBox(
											"Erro geral ao gravar curso"
													+ caught);
									errogeral.show();
									
								};
							};
							Util.getService().salvarCurriculoCurso(bcurcurso,
									clsavecurriculo);

						}
					});

				}
			}
			
		});
		excCurso.addClickListener(new ClickListener() {
			public void onClick(Widget sender) {
				if (getLinhaSelecionadaCurso() != null) {
					ConfirmationDialogBox confirmacao = new ConfirmationDialogBox(
							"Deseja realmente excluir o curso?",
							new ConfirmCallback() {
								@SuppressWarnings("unchecked")
								public void execute(String btnId) {
									if (btnId.equalsIgnoreCase("s")) {
										BeanCurriculoCurso beancurrCurso = lstCurriculoCurso
												.get(getLinhaSelecionadaCurso() - 1);
										AsyncCallback callbackexcCurso = new AsyncCallback() {
											public void onSuccess(Object result) {
												InformationDialogBox informacao = new InformationDialogBox(
														"Curso excluido com sucesso");
												informacao.center();
												informacao.show();
												gridCurso
														.removeRow(getLinhaSelecionadaCurso());
												lstCurriculoCurso
														.remove(getLinhaSelecionadaCurso() - 1);
												addContagem(lstCurriculoCurso
														.size());
											};

											public void onFailure(
													Throwable caught) {
												ErrorDialogBox erro = new ErrorDialogBox(
														"Erro ao excluir curso ");
												erro.center();
												erro.show();
											};
										};
										Util.getService()
												.excluirCursoService(
														beancurrCurso,
														callbackexcCurso);
									}
								}
							});
					confirmacao.center();
					confirmacao.show();
				} else {
					ErrorDialogBox erro = new ErrorDialogBox(
							"Nenhum linha selecionada, favor selecione uma linha");
					erro.center();
					erro.show();

				}
			}
		});
		HTML obrigatorio = new HTML("<p>Os campos com (*) são obrigatorios</p>");
		painelGeral.add(flexTable);
		painelGeral.add(gridConhecimento);
		painelGeral.add(discCursos);
		painelGeral.add(obrigatorio);
		painelGeral.add(painelBotaoCadastro);		
		painelGeral.setWidth("600px");
		painelGeral.setHeight("400px");
		this.center();
		this.add(painelGeral);
		

	}

	private void setarTamanhoCampos() {
		nacionalidades.setWidth("300px");
		titularidades.setWidth("300px");
		ultimaAtualizacao.setWidth("100px");
		dataCriacao.setWidth("100px");
		comentario.setWidth("300px");
		descricaoPessoal.setWidth("300px");

	}

	private boolean verificaCampos() {
		boolean certo = true;
		if (comentario.getText().equalsIgnoreCase("")) {
			certo = false;
		} else if(descricaoPessoal.getText().equalsIgnoreCase("")){
			certo = false;
		} 
		return certo;
	}

	public void iniciarComponentes() {

		nacionalidades = new NacionalidadeListBox();
		descricaoPessoal = new TextArea();
		titularidades = new TitularidadesListBox();
		disponibilidadeSim = new RadioButton("Sim");
		disponibiliddeNao = new RadioButton("Nao");
		ultimaAtualizacao = new DateBox();
		dataCriacao = new DateBox();
		comentario = new TextArea();
		gridCurso = new FlexTable();
		gridConhecimento = new FlowPanel();
		painelBotaoCadastro = new FlexTable();
		cadCurso = new Button("Adicionar");
		excCurso = new Button("Excluir");

		painelGeral = new VerticalPanel();

		disponibilidade = new DisclosurePanel("Disponibilidade para viagens");

	}

	public void setarEstiloGridCurso() {

		gridCurso.getFlexCellFormatter().setStyleName(0, 0, "grid");
		gridCurso.getFlexCellFormatter().setStyleName(0, 1, "grid");
		gridCurso.getFlexCellFormatter().setStyleName(0, 2, "grid");
		gridCurso.getFlexCellFormatter().setStyleName(0, 3, "grid");

		// gridCurso.setStyleName("grid");

	}

	private void addContagem(int totalResultado) {

		gridCurso.setWidget(totalResultado + 1, 0, new HTML(
				"Total de cursos encontrados: " + totalResultado));
		gridCurso.getFlexCellFormatter().setColSpan(totalResultado + 1, 0, 3);
		gridCurso.getFlexCellFormatter().setAlignment(totalResultado + 1, 0,
				HasHorizontalAlignment.ALIGN_RIGHT,
				HasVerticalAlignment.ALIGN_MIDDLE);
		gridCurso.getFlexCellFormatter().setStyleName(totalResultado + 1, 0,
				"resultadoGridContagem");
	}

	private void setarEstiloLinhaSelecionada(final int rowline) {

		if (pastRow != -1) {
			gridCurso.getFlexCellFormatter().setStyleName(pastRow, 0,
					"resultadoGridLinhaNaoSelecionada");
			gridCurso.getFlexCellFormatter().setStyleName(pastRow, 1,
					"resultadoGridLinhaNaoSelecionada");
			gridCurso.getFlexCellFormatter().setStyleName(pastRow, 2,
					"resultadoGridLinhaNaoSelecionada");
			gridCurso.getFlexCellFormatter().setStyleName(pastRow, 3,
					"resultadoGridLinhaNaoSelecionada");
		}
		if (rowline > 0) {
			gridCurso.getFlexCellFormatter().setStyleName(rowline, 0,
					"resultadoGridLinhaSelecionada");
			gridCurso.getFlexCellFormatter().setStyleName(rowline, 1,
					"resultadoGridLinhaSelecionada");
			gridCurso.getFlexCellFormatter().setStyleName(rowline, 2,
					"resultadoGridLinhaSelecionada");
			gridCurso.getFlexCellFormatter().setStyleName(rowline, 3,
					"resultadoGridLinhaSelecionada");
		}
		pastRow = rowline;
	}

	public void setRow(Integer row) {

		this.row = row;
	}

	public Integer getRow() {

		return row;
	}

	public void setLstCurriculoconhecimento(
			List<BeanCurriculoConhecimentos> lstCurriculoconhecimento) {

		this.lstCurriculoConhecimento = lstCurriculoconhecimento;
	}

	public List<BeanCurriculoConhecimentos> getLstCurriculoconhecimento() {

		return lstCurriculoConhecimento;
	}

	public void carregargrid(BeanProfissionalCurriculo bpcurriculo) {
		if (bpcurriculo != null) {
			AsyncCallback<List<BeanCurriculoCurso>> clCurCurso = new AsyncCallback<List<BeanCurriculoCurso>>() {
				int i = 1;

				public void onSuccess(List<BeanCurriculoCurso> result) {

					lstCurriculoCurso.clear();
					if (result != null) {
						for (Iterator<BeanCurriculoCurso> iterator = result
								.iterator(); iterator.hasNext();) {
							BeanCurriculoCurso beanCurriculoCurso = (BeanCurriculoCurso) iterator
									.next();
							gridCurso.setWidget(i, 0, new HTML(
									beanCurriculoCurso.getId() + ""));
							gridCurso.setWidget(i, 1, new HTML(
									beanCurriculoCurso.getCurso()));
							gridCurso.setWidget(i, 2, new HTML(
									beanCurriculoCurso.getCargaHoraria() + ""));
							gridCurso.setWidget(i, 3, new HTML(
									beanCurriculoCurso.getInstituicao()));
							gridCurso.getFlexCellFormatter().setVisible(i, 0,
									false);
							lstCurriculoCurso.add(beanCurriculoCurso);
							i++;
						}
						addContagem(lstCurriculoCurso.size());
						setRow(i);
						if (lstCurriculoCurso.size() == 0 && gridCurso.getRowCount() > 3) {
							gridCurso.clearCell(lstCurriculoCurso.size() + 2, 0);
						}
					}
				}

				public void onFailure(Throwable caught) {

					ErrorDialogBox erroBen = new ErrorDialogBox(
							"Erro ao buscar Curriculo Curso" + caught);
					erroBen.show();

				}

			};
			Util.getService().getlistCurriculoCurso(bpcurriculo.getId(),
					clCurCurso);

		}

		addContagem(lstCurriculoCurso.size());
		if (lstCurriculoCurso.size() == 0) {
			excCurso.setEnabled(false);
		}

	}

	public void limparcomponents() {

		descricaoPessoal.setText("");
		disponibilidadeSim.setChecked(false);
		disponibiliddeNao.setChecked(false);
		comentario.setText("");

	}

	public void setBeanProfissionalCurriculoLocal(
			BeanProfissionalCurriculo beanProfissionalCurriculoLocal) {
		this.beanProfissionalCurriculoLocal = beanProfissionalCurriculoLocal;
	}

	public BeanProfissionalCurriculo getBeanProfissionalCurriculoLocal() {
		return beanProfissionalCurriculoLocal;
	}

	public void setLinhaSelecionadaCurso(Integer linhaSelecionadaCurso) {
		this.linhaSelecionadaCurso = linhaSelecionadaCurso;
	}

	public Integer getLinhaSelecionadaCurso() {
		return linhaSelecionadaCurso;
	}

	public void setViewCurriculo(ACurriculos viewCurriculo) {
		this.viewCurriculo = viewCurriculo;
	}

	public ACurriculos getViewCurriculo() {
		return viewCurriculo;
	}

	
}